On Observational Equivalence and Compiler Correctness

نویسندگان

  • Fabio Q. B. da Silva
  • Luiz Freire
چکیده

We study the problem of giving proofs of compiler correctness in the framework of observational equivalence 16] and correspondences 17]. The starting point for correctness is a formal semantics of the programming language given in a form of Structural Operational Semantics 15] wich we call Relational Semantics 4, Chapter 2]. We start by introducing Relational Semantics. We then deene an equivalence relation between Relational Semantics based on the notion of observational equivalence 16], and extend the proof method of correspondences 17] to a proof method for observational equivalence of Relational Semantics, which we call Model Correspondence. Finally, we use observational equivalence to establish the equivalence between a (standard) semantics of the programming language and another semantics deened using a compilation of the language into some machine code. This notion of equivalence deenes a criterion for compiler correctness and we shall argue why this is a suitable criterion.

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Compilation and Equivalence of Imperative Objects

We adopt the untyped imperative object calculus of Abadi and Cardelli as a minimal setting in which to study problems of compilation and program equivalence that arise when compiling objectoriented languages. We present both a big-step and a small-step substitution-based operational semantics for the calculus. Our first two results are theorems asserting the equivalence of our substitutionbased...

متن کامل

Verifying an Open Compiler Using Multi-language Semantics

Existing verified compilers are proved correct under a closed-world assumption, i.e., that the compiler will only be used to compile whole programs. We present a new methodology for verifying correct compilation of program components, while formally allowing linking with target code of arbitrary provenance. To demonstrate our methodology, we present a two-pass type-preserving open compiler and ...

متن کامل

Declarative Semantics for Functional Languages

We present a semantics for an applied call-by-value lambda-calculus that is compositional, extensional, and elementary. We present four different views of the semantics: 1) as a relational (big-step) semantics that is not operational but instead declarative, 2) as a denotational semantics that does not use domain theory, 3) as a non-deterministic interpreter, and 4) as a variant of the intersec...

متن کامل

Revisiting Elementary Denotational Semantics

We present a semantics for an applied call-by-value λ-calculus that is compositional, extensional, and elementary. We present four di‚erent views of the semantics: 1) as a relational (big-step) semantics that is not operational but instead declarative, 2) as a denotational semantics that does not use domain theory, 3) as a non-deterministic interpreter, and 4) as a variant of the intersection t...

متن کامل

Type-Preserving Flow Analysis and Interprocedural Unboxing (Extended Version)

Interprocedural flow analysis can be used to eliminate otherwise unnecessary heap allocated objects (unboxing), and in previous work we have shown how to do so while maintaining correctness with respect to the garbage collector. In this paper, we extend the notion of flow analysis to incorporate types, enabling analysis and optimization of typed programs. We apply this typed analysis to specify...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

برای دانلود متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 1994